package Servicios;

import bean.contrato;
import bean.empleado;
import bean.rol;
import bean.usuario;
import dao.d_cargo;
import dao.d_contrato;
import dao.d_depto;
import dao.d_empleado;
import dao.d_rol;
import dao.d_usuario;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author USER
 */
@WebService(serviceName = "ServiciosEmpleado")
public class ServiciosEmpleado {

    /**
     * This is a sample web service operation
     */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "VerificarUsuario")
    public String VerificarUsuario(@WebParam(name = "cedula") String cedula, @WebParam(name = "pass") String pass) {
        d_usuario conUsuario = new d_usuario();
        usuario usuarioR = null;
        try {
            usuarioR = conUsuario.buscarRegistro(cedula, pass);
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);

        }
        if (usuarioR == null) {
            return "";
        }
        return usuarioR.getUsuario();
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "obtenerInformacionEmpleado")
    public ArrayList obtenerInformacionEmpleado(@WebParam(name = "cedula") String cedula) {
        ArrayList listaDatos = new ArrayList();
        d_empleado conEmpleado = new d_empleado();
        empleado empleadoR = null;
        try {
            empleadoR = conEmpleado.buscarEmpleado(cedula);

            
            
            if (empleadoR != null) {
                listaDatos.add(cedula);
                listaDatos.add(empleadoR.getApellidos());
                listaDatos.add(empleadoR.getNombres());
                listaDatos.add(empleadoR.getDireccion());
                listaDatos.add(empleadoR.getNivel());
                if (empleadoR.getTipo_sangre() == null) {
                    listaDatos.add("---");
                } else {
                    listaDatos.add(empleadoR.getTipo_sangre());
                }
                
                if (empleadoR.getPeso() == null) {
                    listaDatos.add("---");
                } else {
                    listaDatos.add(String.valueOf(empleadoR.getPeso()));
                }                
       
                listaDatos.add(String.valueOf(empleadoR.getEstatura()));                          
                
                if (empleadoR.getSexo() == null) {
                    listaDatos.add("---");
                } else {
                    listaDatos.add(empleadoR.getSexo());
                }
                
                if (empleadoR.getFoto() == null) {
                    listaDatos.add("Foto no disponible");
                } else {
                    listaDatos.add(empleadoR.getFoto());
                }
                listaDatos.add(empleadoR.getFecha_nacim());
                
                
            }

        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaDatos;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "obtenerHistorialLaboral")
    public ArrayList obtenerHistorialLaboral(@WebParam(name = "cedula") String cedula) {
        ArrayList listaContratos = new ArrayList();
        d_contrato conContrato = new d_contrato();
        ArrayList listaDatosContrato = new ArrayList();
        try {
            listaContratos = conContrato.listadoContratos();
            for (int i = 0; i < listaContratos.size(); i++) {
                contrato contratoR = (contrato) listaContratos.get(i);
                if (contratoR.getMiempleado().getCedula().equals(cedula)) {
                    listaDatosContrato.add(
                            contratoR.getId() + "/" + contratoR.getMicargo().getNombre() + "/"
                            + contratoR.getFecha() + "/" + contratoR.getMidepar().getNombre() + "/" + contratoR.getSueldo()
                    );
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            
        }
        return listaDatosContrato;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "obtenerRolesPago")
    public ArrayList obtenerRolesPago(@WebParam(name = "cedula") String cedula) {
        ArrayList listaRoles = new ArrayList();
        ArrayList listaDatosRol = new ArrayList();
        d_rol conRol = new d_rol();

        try {

            listaRoles = conRol.listadoRolesXPersona(cedula);
            for (int i = 0; i < listaRoles.size(); i++) {
                rol rolR = (rol) listaRoles.get(i);
                listaDatosRol.add(
                        rolR.getMicontrato().getId() + "/"                       
                        + rolR.getId() + "/"
                        + rolR.getFecha());
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            
        }
        return listaDatosRol;
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "obtenerDetalleRol")
    public ArrayList obtenerDetalleRol(@WebParam(name = "idrol") String idrol) {
        //TODO write your implementation code here:

        ArrayList listaDatosRol = new ArrayList();
        d_rol conRol = new d_rol();
        rol rolR;
        try {
            rolR = (rol) conRol.buscarRol(Integer.parseInt(idrol));
            listaDatosRol.add(rolR.getMicontrato().getId());
            listaDatosRol.add(rolR.getMicontrato().getMicargo().getNombre());
            listaDatosRol.add(rolR.getId());
            listaDatosRol.add(rolR.getFecha());
            listaDatosRol.add(rolR.getMicontrato().getSueldo());
            listaDatosRol.add(rolR.getH_extra());
            listaDatosRol.add(rolR.getH_extra() * 4);
            listaDatosRol.add(rolR.getComision());
            listaDatosRol.add(rolR.getMicontrato().getSueldo() + rolR.getH_extra() * 4 + rolR.getComision());

        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaDatosRol;
    }
}
